Creating time lapse video in real-time

ABSTRACT

A time lapse video is created in real-time, without post-production. User configurations are set for a time lapse video recording. A real-time video feed is received into a buffer. Based on a user configuration for frequency, certain frames in the buffer can be discarded prior to generating the video file. The time lapse video is output as a video file according to user configurations.

CROSS-REFERENCES TO RELATED APPLICATIONS

This application claims priority under 35 USC 120 to U.S. Pat. App. No. 61/795,400, entitled METHOD AND APPARATUS FOR CREATING A TIME LAPSE VIDEO, by Amanjyot Johar, the contents of which are being hereby incorporated by reference in its entirety.

FIELD OF THE INVENTION

The invention relates generally to digital video, and more specifically, to creating time lapse digital video in real-time.

BACKGROUND OF THE INVENTION

Currently, video processing techniques are applied to raw footage that already exists. For example, an MPG video file is generated on a cell phone and is later edited on a desktop computer with a video editing software application. At that point in post-production, various techniques are applied to the video content and rendered as a new file. Some examples include processing the video in slow motion, adding footage from different tracks, changing the frame rate of playback to speed up or slow down the video etc.

Problematically, for both still photography and video the raw footage for creating time lapse videos consumes a lot of storage as raw footage is taken for hours or even weeks at a time. The problem is exasperated on devices that are limited in storage, such as a mobile device. Ironically, the same mobile devices have embedded still and video cameras with increasing resolutions including high-definition resolution and 3-dimensional capabilities. The resulting file size limits the duration of video that can be captured. After editing, the output file can be reduced to, for example, 1% or less of the raw footage file.

Moreover, the video editing software applications can be complex for users that just intend to capture video. Formatting between the capture device and the editing device has to be compatible. Furthermore, the additional cost is sometimes prohibitive.

What is needed is a technique for creating time-lapse video from still raw images or raw video footage in real-time, while overcoming the deficiencies of the prior art.

SUMMARY

To meet the above-described needs, methods, computer program products, and systems for creating time lapse video in real-time.

In one embodiment, user configurations are set for a time lapse video recording. A real-time video feed is received into a buffer of a device. Based on a user configuration for the length of footage desired, the number or frequency of shots and/or frame rates, the device adapts itself to capture a video stream according to the specified parameters. To create the final time lapse video, certain frames in the buffer can be discarded prior to generating the video file. The time lapse video is output as a video file according to user configurations. No post production in a video editing software application is necessary.

In another embodiment, a real time feed from still camera images is received into a buffer. Based on user configuration for the length of footage desired, the number or frequency of shots and/or the frame rates, the device can create a video stream from the raw still images. Since the frame rate of the still images will be substantially higher than the frame rate of a point and shoot or high end DSLRS available in the market today, the resulting video is free from the effects of jitters associated with such video production.

In another embodiment, the frequency adjusts the shutter speed of a video source. The resulting real-time video feed is received at the time lapse rate in this case.

In yet another embodiment, the frequency or frame rate or even the length of footage desired can be varied while a time lapse video is already being recorded. For example, the time lapse can be slowed down at certain points, and sped up at other points.

Advantageously, time lapse videos are generated on-the-fly to save storage space and post-production complexity.

BRIEF DESCRIPTION OF THE DRAWINGS

In the following drawings, like reference numbers are used to refer to like elements. Although the following figures depict various examples of the invention, the invention is not limited to the examples depicted in the figures.

FIG. 1 is a high-level block diagram illustrating a system to create time lapse video in real-time, according to one embodiment.

FIG. 2 is a more detailed block diagram illustrating a time lapse module of FIG. 1, according to one embodiment.

FIG. 3 is a high-level flow diagram illustrating a method for creating time lapse video in real-time, according to one embodiment.

FIG. 4 is a flow diagram illustrating a method for varying the frequency of time lapse video, according to one embodiment.

FIG. 5 is a block diagram illustrating an exemplary computing device, according to one embodiment, according to one embodiment.

DETAILED DESCRIPTION

The present invention provides methods, computer program products, and systems for creating real-time time lapse video. Generally, a time lapse video has a duration that is shorter than a duration of video capture. For example, a time lapse video of a 1-hour sunset can be condensed into a 1 minute video output file. Other video content an include surveillance video, blooming flowers, traffic patterns, or any other subject matter. Frames in the video output file can be played back at a faster rate than capture in order to shorten the duration.

Time Lapse Video Systems (FIGS. 1-2)

FIG. 1 is a high-level block diagram illustrating a system 100 to create time lapse video in real-time, according to one embodiment. The system 100 comprises a photographic or video source 110, real time image or video buffer 120, a time lapse module 130, and a video output file. The data flow starts at the video source 110 which stores video data in the real-time video buffer 120 until the video data is processed by the time lapse module 130 into a video output file 140.

The video source 110 can be any device capable of capturing real time video or still images of a subject. In other embodiments, the video source 110 can be a rendering engine that outputs frames. In some embodiments, the video source 110 can be integrated to a single device that generates time lapse videos. In other embodiments, the video source 110 can be wired, plugged-in, or remotely connected to the other components of the system 100.

The real-time image or video buffer 120 can be a RAM memory or any other type of storage element. The real-time video buffer 120 receives video data from the video source. Video frames are generally received at a rate of 24, 25 or 30 frames per second, or any other appropriate rate. The rate may optionally be programmable by the user. The frames can be interlaced or progressive, standard or high definition resolution, and 2-dimensional or 3-dimensional. The frames can be stored temporarily until ready for processing. The frames can be raw, uncompressed video frames, or compressed video. Video and images may occupy more memory than the available RAM memory. Persons skilled in the art may recognize that in such cases the images and videos may temporarily be stored in the main memory until ready for processing.

The time lapse module 130 applies user configurations to the real-time video. In one embodiment, the frequency parameter is applied to frames captured into the real-time video buffer 120. For example, if the time lapse is 2× normal video speed, every other frame can be selected for the video output file 140. In another embodiment, the frequency parameter is applied to the video source 110 by adjusting the shutter speed. Consequentially, frames are generated at the time lapse video speed. In yet another embodiment, a user may be able to specify the frame rate desired or the length of the footage desired. Additional embodiments of the time lapse module 130 are described below with respect to FIG. 2.

The video output file 140 includes a time lapse video resulting from the video processing. The video output file 140 can be of any format, compressed or uncompressed, lossy or lossless. Exemplary formats include MPG, AVI, WMV, MOV, MP4, or any other suitable format.

FIG. 2 is a more detailed block diagram illustrating a time lapse module 130 of FIG. 1, according to one embodiment. The time lapse module can be implemented in a computing device 150, such as a cell telephone, a tablet computing device, a digital handheld camera, a time lapse video device, or any other suitable computing device as described below in association with FIG. 5. The time lapse module 130 further comprises user configurations 132, a frame selector 134, and a video compression module 136.

The user configurations 132 can be a set of parameters for the time lapse video stored in a memory location. The particular user configurations are specific to an implementation. Exemplary user configurations 131 include a frequency of time lapse video relative to real-time video, a duration of output video, a duration of input video, the desired frame rate while shooting the video, the desired frame rate for video playback and the like. The frequency parameter can be applied to a shutter on the camera, or to buffered frames, as describe below. In one embodiment, the user configurations 131 can be received through a user interface such as a touch screen or pointer. In another embodiment, the user configurations 131 can be set by physical buttons, switches, or dials.

The frame selector 134 determines which frames to use and which to discard from the real-time video feed, based on the set of parameters corresponding to the user configurations described above.

The frame buffer 136 can be a cache or other fast memory element to store frames being processed. Several frames are stored when implementing temporal compression algorithms such as MPG.

The video rendering module 138 renders the video output file 140 according to pre-configured settings. The settings can include a type of format, a resolution, and other settings. Video rendering can also include compression of the video to reduce the size of the video output file 140. Some embodiments include hardware accelerators for rendering tasks.

Time Lapse Video Methods (FIGS. 3-4)

FIG. 3 is a high-level flow diagram illustrating a method 300 for creating time lapse video in real-time, according to one embodiment. The method 300 can be implemented, in one embodiment, using the system 100 of FIG. 1. Moreover, the method 300 can be implemented in software, hardware, or a combination of both. The method 300 can be automatically performed (once initialized) without human intervention.

At step 310, user configurations for time lapse video are received. The user configurations can be set through a user interface or a physical setting. There can be pre-configured frequencies for selection (e.g., 2×, 4×, or 100×), or an input box to type in an exact selection. There can be additional preconfigured options for the desired input or output frame rate, the length of the desired footage or the frequency of shots, or there may be an additional input box to type in an exact desired selection.

At step 320, a real-time video feed is received. The video is received either at intervals determined by the frequency, or at regular frequency over the configured duration, or based on the user configurations. Also, natural events such as power loss or memory capacity being reached can prematurely stop the real-time video feed.

At step 330, frames from video data are selected according to time lapse parameters. Frames are discarded based on the frequency setting. Alternatively, no frames may be discarded and instead the frame rate of the output video is increased manifold to preserve the granularity of the events recorded. In such a scenario, the size of the output video may not be much smaller than the input stream captured.

At step 340, an output video file with a duration less than the real-time video feed is generated. The output video file can be displayed on a video player at the reduced duration. The output video file can also be further processed, for example, in a video editing software application. It may be understood by one skilled in the art that based on the user configurations of frame rates and frequency, the length of the output video may sometimes exceed that of the real-time video feed. In such cases the invention behaves as a slow motion capture device.

FIG. 4 is a flow diagram illustrating a method for varying the frequency of time lapse video, according to one embodiment.

At step 310, user configurations for time lapse video are received. At step 320, a real-time video feed is received. These steps can be similar to the identically-numbered steps of the method 300 of FIG. 3 described above.

At step 425, if an indication of frequency variation is detected, at step 427, the frequency setting is changed. The frequency can be permanently varied, or temporarily varied by a user. For example, a sporting event that is time lapsed speeds up the event, but a user may desire to slow down certain parts over the duration. In one case, when the winner of a fight is declared, the user can press a button which slows down the time lapsing by a default such a half. As a result, if the time lapse was recording at 4×, the temporary slowdown at half speed would change the recording to 2× temporarily while the slowdown button is pushed.

On the other hand, at step 425, if an indication of frequency variation is not detected, at step 330, frames are selected from video data according to an existing time lapse frequency. The operation is normal.

At step 340, an output video file with a duration less than the real-time video feed is generated, as discussed above. One of ordinary skill in the art will recognize that, given the disclosure herein, that many other embodiments are possible. In an embodiment, the device can be equipped with a Graphical User Interface that allows the user to manipulate the frequency, frame rate, length of footage desired etc. without interfering with the underlying hardware settings. The GUI automatically adjusts these hardware settings for the user.

In one embodiment, if the device is capable of being connected to the internet, the resulting videos thus generated can be stored in the cloud database of a service provider.

In another embodiment, the device may be equipped with a GPS that allows the user to store the location information where the video was shot.

In yet another embodiment, the device may be equipped with networking hardware that can connect the device to a local Wi-Fi hub, or the cellular network to allow access to the internet.

In still another embodiment, the device may be equipped with a GUI that allows the user to upload the videos so created to various social networks such as Facebook, Twitter etc.

In an alternative embodiment, voice and audio data may be overlaid with the time lapse video overlaid to form a complete multimedia experience. The user can also insert captions, title and other text elements and overlay them with the video.

In another embodiment, the user may be able to provide modules for embedding network content such as information based on the location of the video being shot or advertisements based on the content or the location of the video.

Exemplary Computing Device (FIG. 5)

FIG. 5 is a block diagram illustrating an exemplary computing device 500 for use in the system 100 of FIG. 1, according to one embodiment.

The computing device 500, of the present embodiment, includes a memory 510, a processor 520, a storage drive 530, and an I/O port 540. Each of the components is coupled for electronic communication via a bus 599. Communication can be digital and/or analog, and use any suitable protocol.

The memory 510 further comprises a time lapse module 512 (as described above) and an operating system 514. Other modules stored in memory can include a web browser application, a web-browser-based application, a mobile application, a streamed application, a locally-installed application, and the like.

The operating system 514 can be one of the Microsoft Windows® family of operating systems (e.g., Windows 2000, Windows XP, Windows XP x64 Edition, Windows Vista, Windows 7, Windows 8, Windows CE, Windows Mobile), Linux, HP-UX, UNIX, Sun OS, Solaris, Mac OS X, Alpha OS, AIX, IRIX32, IRIX64, iOS, Android etc. Other operating systems may be used. Microsoft Windows is a trademark of Microsoft Corporation.

The processor 520 can be a video processor, a general purpose processor, an application-specific integrated circuit (ASIC), a field programmable gate array (FPGA), a reduced instruction set controller (RISC) processor, an integrated circuit, a Digital Signal Processor (DSP) or the like. A video processor can be optimized for repeated operations. The processor 520 can be single core, multiple core, or include more than one processing elements. The processor 520 can be disposed on silicon or any other suitable material. The processor 520 can receive and execute instructions and data stored in the memory 510 or the storage drive 530. In addition the processor may also be capable of running a virtual machine for exclusively running the video editing software.

The storage drive 530 can be any non-volatile type of storage such as a magnetic disc, EEPROM, Flash, or the like. The storage drive 730 stores code and data for applications.

The I/O port 540 further comprises a user interface 642 and a video input 544. The user interface 442 can output to a display device and receive input from, for example, a keyboard. The video input 544 can be a video source or an input such as a video plug.

Many of the functionalities described herein can be implemented with computer software, computer hardware, computer firmware, or a combination.

Computer software products (e.g., non-transitory computer products storing source code) may be written in any of various suitable programming languages, such as C, C++, C#, Java, JavaScript, PHP, Python, Perl, Ruby, AJAX or HTML5 etc. The computer software product may be an independent application with data input and data display modules. Alternatively, the computer software products may be classes that are instantiated as distributed objects. The computer software products may also be component software such as Java Beans (from Sun Microsystems) or Enterprise Java Beans (EJB from Sun Microsystems).

Furthermore, the computer that is running the previously mentioned computer software may be connected to a network and may interface to other computers using this network. The network may be on an intranet or the Internet, among others. The network may be a wired network (e.g., using copper), telephone network, packet network, an optical network (e.g., using optical fiber), or a wireless network, or any combination of these. For example, data and other information may be passed between the computer and components (or steps) of a system of the invention using a wireless network using a protocol such as Bluetooth, LTE, Wi-Fi (IEEE standards 802.11, 802.11a, 802.11b, 802.11e, 802.11g, 802.11i, and 802.11n, just to name a few examples). For example, signals from a computer may be transferred, at least in part, wirelessly to components or other computers.

In an embodiment, with a Web browser executing on a computer workstation system, a user accesses a system on the World Wide Web (WWW) through a network such as the Internet. The Web browser is used to download web pages or other content in various formats including HTML, XML, text, JAVA applets, PDF, and postscript, and may be used to upload information to other parts of the system. The Web browser may use uniform resource identifiers (URLs) to identify resources on the Web and hypertext transfer protocol (HTTP) in transferring files on the Web.

This description of the invention has been presented for the purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form described, and many modifications and variations are possible in light of the teaching above. The embodiments were chosen and described in order to best explain the principles of the invention and its practical applications. This description will enable others skilled in the art to best utilize and practice the invention in various embodiments and with various modifications as are suited to a particular use. The scope of the invention is defined by the following claims. 

I claim:
 1. A computer-implemented method for creating time lapse video in real-time, comprising: receiving one or more user configurations related to time lapse video; receiving a real-time video feed; generating frames according to the one or more user configurations; and outputting a time lapse video file, wherein the duration of the time lapse video file is less than the duration of the real-time video feed.
 2. The method of claim 1, wherein the one more user configurations comprise at least one of: frequency of input relative to real-time, duration of input, and duration of output.
 3. The method of claim 1, wherein receiving one or more user configurations comprises at least one of: receiving one or more user configurations related to time lapse video through a user interface, and receiving one or more user configurations related to time lapse video from a physical setting.
 4. The method of claim 1, wherein receiving a real-time video feed comprises at least one of: receiving a real-time video feed from a video input device, and receiving a real-time video feed from a mobile, hand-held device.
 5. The method of claim 1, wherein generating frames according to one or more user configurations comprises: buffering frames of the real-time video feed; and selecting buffered frames according to a frequency set by the one or more user configurations, and wherein outputting the time-lapse video file comprises outputting the selected buffered frames.
 6. The method of claim 5, wherein the real-time video feed comprises 24, 25 or 30 frames per second of video content.
 7. The method of claim 1, wherein generating frames according to one or more user configurations comprises: buffering frames of the real-time video feed according to a frequency set by the one or more user configurations, and wherein outputting the time-lapse video file comprises outputting the buffered frames.
 8. The method of claim 1, further comprising: varying a frequency of input relative to real-time for the real-time video feed, wherein generating frames according to the one or more user configurations is varied contemporaneously with the varied frequency, and wherein the time-lapse video file is output with more than one frequency of input relative to real-time.
 9. The method of claim 8, further comprising: receiving an indication of cancelling the frequency variation, wherein the time-lapse video file is output without the varied frequency.
 10. A non-transitory computer-readable medium storing source code that, when executed by a processor, performs a method for creating time lapse video in real-time, the method comprising: receiving one or more user configurations related to time lapse video; receiving a real-time video feed; generating frames according to the one or more user configurations; and outputting a time-lapse video file, wherein the duration of the time-lapse video file is less than the duration of the real-time video feed.
 11. The computer-readable medium of claim 10, wherein the one more user configurations comprise at least one of: frequency of input relative to real-time, duration of input, and duration of output.
 12. The computer-readable medium of claim 10, wherein receiving one or more user configurations comprises at least one of: receiving one or more user configurations related to time lapse video through a user interface, and receiving one or more user configurations related to time lapse video from a physical setting.
 13. The computer-readable medium of claim 10, wherein receiving a real-time video feed comprises at least one of: receiving a real-time video feed from a video input device, and receiving a real-time video feed from a mobile, hand-held device.
 14. The computer-readable medium of claim 10, wherein generating frames according to one or more user configurations comprises: buffering frames of the real-time video feed; and selecting buffered frames according to a frequency set by the one or more user configurations, and wherein outputting the time-lapse video file comprises outputting the selected buffered frames.
 15. The computer-readable medium of claim 14, wherein the real-time video feed comprises 24, 25 or 30 frames per second of video content.
 16. The computer-readable medium of claim 10, wherein generating frames according to one or more user configurations comprises: buffering frames of the real-time video feed according to a frequency set by the one or more user configurations, and wherein outputting the time-lapse video file comprises outputting the buffered frames.
 17. The computer-readable medium of claim 10, further comprising: varying a frequency of input relative to real-time for the real-time video feed, wherein generating frames according to the one or more user configurations is varied contemporaneously with the varied frequency, and wherein the time-lapse video file is output with more than one frequency of input relative to real-time.
 18. The computer-readable medium of claim 7, further comprising: receiving an indication of cancelling the frequency variation, wherein the time-lapse video file is output without the varied frequency.
 19. A computing device to create time lapse video in real-time, comprising: a processor; and a memory, comprising: a user configuration module to receive one or more user configurations related to time lapse video; a video input to receive a real-time video feed; a video processing unit to generate frames according to the one or more user configurations, and to output a time-lapse video file, wherein the duration of the time-lapse video file is less than the duration of the real-time video feed.
 20. The computing device of claim 19, wherein the computing device comprises one of: a cellular telephone, 